package com.qingcloud.fexecutor.base.enums;

/**
 * 主题相关枚举
 *
 * @author yangfan
 * @since 2021/11/26 14:51
 */
public class AssetsEnums {

    /**
     * 表类型枚举
     * @author yangfan
     * @since 2021/11/26 14:52
     */
    public enum TableTypeEnum {

        /**
         * 物理主题表
         */
        ENTITY_TABLE(1, "物理主题表"),

        /**
         * SQL主题表
         */
        SQL_TABLE(2, "SQL主题表"),

        ;

        /**
         * code
         */
        public final Integer code;

        /**
         * 描述
         */
        public final String desc;

        TableTypeEnum(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public static TableTypeEnum getByCode(Integer code) {
            for (TableTypeEnum tableTypeEnum : TableTypeEnum.values()) {
                if (tableTypeEnum.getCode().equals(code)) {
                    return tableTypeEnum;
                }
            }
            return null;
        }

        public Integer getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    }



    /**
     * 复制方式
     * @author yangfan
     * @since 2021/12/07 14:52
     */
    public enum CopyTypeEnum {

        /**
         * 全量复制
         */
        ALL_COPY(1, "全量复制"),

        /**
         * 增量更新
         */
        ADD_UPDATE(2, "增量更新"),

        ;

        /**
         * code
         */
        public final Integer code;

        /**
         * 描述
         */
        public final String desc;

        CopyTypeEnum(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }
        public static CopyTypeEnum getEnumByCode(Integer code){
            for(CopyTypeEnum enums:CopyTypeEnum .values()){
                if(enums.getCode().equals(code)){
                    return enums;
                }
            }
            return null;
        }

        public Integer getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    }

    /**
     * 发布状态
     * @author yangfan
     * @since 2021/12/07 14:52
     */
    public enum PubilishStautsEnum {

        /**
         * 待发布
         */
        WAIT_PUBLISH(1, "待发布"),

        /**
         * 发布中
         */
        PUBLISHING(2, "发布中"),

        /**
         * 发布成功
         */
        PUBLISH_SUCESS(3, "发布成功"),

        /**
         * 发布失败
         */
        PUBLISH_FAIL(4, "发布失败"),
        ;

        /**
         * code
         */
        public final Integer code;

        /**
         * 描述
         */
        public final String desc;

        PubilishStautsEnum(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public static PubilishStautsEnum getEnumByCode(Integer code){
            for(PubilishStautsEnum enums:PubilishStautsEnum .values()){
                if(enums.getCode().equals(code)){
                    return enums;
                }
            }
            return null;
        }


        public Integer getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    }

    /**
     * 主题表周期 数据处理方式
     * @author yangfan
     * @since 2021/12/07 14:52
     */
    public enum DataHanderTypeEnum {

        /**
         * 永久删除
         */
        DELETE(1, "永久删除"),

        /**
         * 移动归档
         */
        MOVE(2, "移动归档"),

        ;

        /**
         * code
         */
        public final Integer code;

        /**
         * 描述
         */
        public final String desc;

        DataHanderTypeEnum(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public Integer getCode() {
            return code;
        }
    }


    /**
     * 数据层级枚举
     * @author yangfan
     * @since 2021/12/07 14:52
     */
    public enum DataHierarchyEnum {
        /**
         * ODS
         */
        ODS("ODS"),

        /**
         * DW
         */
        DW("DW"),
        /**
         * DM
         */
        DM("DM"),
        ;

        /**
         * code
         */
        public final String code;


        DataHierarchyEnum(String code ) {
            this.code = code;
        }

        public String getCode() {
            return code;
        }
    }


    /**
     * 主题表 任务执行状态
     * @author yangfan
     * @since 2021/12/07 14:52
     */
    public enum TaskExecuteStatusEnum {

        /**
         * 执行中
         */
        EXECUTEING(1, "执行中"),

        /**
         * 执行成功
         */
        SUCCESS(2, "执行成功"),

        /**
         * 执行失败
         */
        FAIL(3, "执行失败"),

        ;

        /**
         * code
         */
        public final Integer code;

        /**
         * 描述
         */
        public final String desc;

        TaskExecuteStatusEnum(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public Integer getCode() {
            return code;
        }
    }

    /**
     * 主题表类型枚举
     * @author yangfan
     * @since 2021/11/26 14:52
     */
    public enum TypeEnum {

        /**
         * 主题集类别
         */
        CATEGORY(1, "主题集类别"),

        /**
         * 主题集
         */
        ASSETS(2, "主题集"),

        ;

        /**
         * code
         */
        public final Integer code;

        /**
         * 描述
         */
        public final String desc;

        TypeEnum(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public static TableTypeEnum getByCode(Integer code) {
            for (TableTypeEnum tableTypeEnum : TableTypeEnum.values()) {
                if (tableTypeEnum.getCode().equals(code)) {
                    return tableTypeEnum;
                }
            }
            return null;
        }

        public Integer getCode() {
            return code;
        }
    }


    /**
     * 复制方式
     * @author yangfan
     * @since 2021/12/07 14:52
     */
    public enum StorageTypeEnum {

        /**
         * 数据映射
         */
        DATA_MAPPING(1, "数据映射"),

        /**
         * 数据复制
         */
        DATA_COPY(2, "数据复制"),

        ;

        /**
         * code
         */
        public final Integer code;

        /**
         * 描述
         */
        public final String desc;

        StorageTypeEnum(Integer code, String desc) {
            this.code = code;
            this.desc = desc;
        }
        public static StorageTypeEnum getEnumByCode(Integer code){
            for(StorageTypeEnum enums:StorageTypeEnum .values()){
                if(enums.getCode().equals(code)){
                    return enums;
                }
            }
            return null;
        }

        public Integer getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    }

}
